//package org.csu.mybigpro.controller;
//
//import org.csu.mybigpro.common.CommonResponse;
//import org.csu.mybigpro.domain.User;
//import org.csu.mybigpro.service.AuthService;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.web.bind.annotation.*;
//import org.springframework.web.multipart.MultipartFile;
//
//@RestController
//@RequestMapping("/api/teacher/info") // 个人信息管理的根路径
//public class TeacherInfoController {
//
//    @Autowired
//    private AuthService authService;
//
//    // 不添加 getProfile()，因为 TeacherProfileController 已经处理了获取个人信息
//
//    /**
//     * 更新当前登录教师的个人信息
//     * PUT /api/teacher/info
//     * 接收前端传递的 User 对象，只更新允许修改的字段 (如 name, email, phone, department)
//     */
//    @PutMapping
//    public CommonResponse<?> updateProfile(@RequestBody User userUpdates) {
//        return authService.updateProfile(userUpdates);
//    }
//
//    /**
//     * 上传教师头像
//     * POST /api/teacher/info/avatar/upload
//     */
//    @PostMapping("/avatar/upload")
//    public CommonResponse<String> uploadAvatar(@RequestParam("file") MultipartFile file) {
//        if (file.isEmpty()) {
//            return CommonResponse.createForError("上传文件不能为空");
//        }
//        try {
//            String avatarUrl = authService.uploadAvatar(file);
//            return CommonResponse.createForSuccess("头像上传成功", avatarUrl);
//        } catch (Exception e) {
//            e.printStackTrace();
//            return CommonResponse.createForError("头像上传失败: " + e.getMessage());
//        }
//    }
//}

// src/main/java/org/csu/mybigpro/controller/TeacherInfoController.java
package org.csu.mybigpro.controller;

import org.csu.mybigpro.common.CommonResponse;
import org.csu.mybigpro.common.ResponseCode; // 引入 ResponseCode
import org.csu.mybigpro.domain.User;
import org.csu.mybigpro.service.AuthService;
import org.csu.mybigpro.service.MinioService;
import org.csu.mybigpro.util.UserContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

@RestController
@RequestMapping("/api/teacher/info") // 专用于通用教师信息的API前缀
public class TeacherInfoController {

    @Autowired
    private AuthService authService; // 复用AuthService来处理用户数据更新
    @Autowired
    private MinioService minioService; // 用于文件上传

    /**
     * 获取当前登录教师的个人基本信息
     * （为了简化，这里暂时复用 AuthService 的 getCurrentUser，它返回完整的User对象）
     */
    @GetMapping
    public CommonResponse<User> getTeacherInfo() {
        return authService.getCurrentUser();
    }

    /**
     * 更新当前登录教师的基本信息 (姓名、邮箱、电话、部门等)
     */
    @PutMapping
    public CommonResponse<?> updateTeacherInfo(@RequestBody User updatedUser) {
        Integer userId = UserContext.getCurrentUserId();
        if (userId == null) {
            return CommonResponse.createForError("无法获取当前用户信息，请重新登录");
        }
        // 确保要更新的用户ID与当前认证的用户ID一致，防止越权操作
        updatedUser.setId(Long.valueOf(userId));
        return authService.updateUserInfo(updatedUser);
    }

    /**
     * 上传教师头像
     */
    @PostMapping("/avatar/upload")
    public CommonResponse<String> uploadAvatar(@RequestParam("file") MultipartFile file) {
        try {
            if (file.isEmpty()) {
                return CommonResponse.createForError("上传文件不能为空");
            }
            String avatarUrl = minioService.uploadFile(file);
            // 上传成功后，更新用户在数据库中的头像URL
            Integer userId = UserContext.getCurrentUserId();
            if (userId == null) {
                return CommonResponse.createForError("无法获取当前用户信息，请重新登录");
            }
            return authService.updateAvatarUrl(userId, avatarUrl);
        } catch (Exception e) {
            e.printStackTrace();
            return CommonResponse.createForError("头像上传失败: " + e.getMessage());
        }
    }
}